summaryrefslogtreecommitdiff
path: root/app/[lng]/engineering/(engineering)/system/password-policy/page.tsx
blob: 0f14fefefe70622eabb47ebbc1ff3e7bcd37e124 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// app/admin/password-policy/page.tsx

import * as React from "react"
import { Skeleton } from "@/components/ui/skeleton"
import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"
import { Separator } from "@/components/ui/separator"
import { Alert, AlertDescription } from "@/components/ui/alert"
import { AlertTriangle } from "lucide-react"
import SecuritySettingsTable from "@/components/system/passwordPolicy"
import { getSecuritySettings } from "@/lib/password-policy/service"


export default async function PasswordPolicyPage() {
  try {
    // 보안 설정 데이터 로드
    const securitySettings = await getSecuritySettings()

    return (
      <React.Suspense
        fallback={
          <DataTableSkeleton
            columnCount={4}
            searchableColumnCount={0}
            filterableColumnCount={0}
            cellWidths={["20rem", "30rem", "15rem", "10rem"]}
            shrinkZero
          />
        }
      >
        <div className="space-y-6">
          <div>
            <h3 className="text-lg font-medium">협력업체 사용자 비밀번호 정책 설정</h3>
            <p className="text-sm text-muted-foreground">
              협력업체 사용자들을 위한 비밀번호 정책과 보안 설정을 관리할 수 있습니다.
            </p>
          </div>
          <Separator />
          <SecuritySettingsTable initialSettings={securitySettings} />
        </div>
      </React.Suspense>
    )
  } catch (error) {
    console.error('Failed to load security settings:', error)
    
    return (
      <div className="space-y-6">
        <div>
          <h3 className="text-lg font-medium">협력업체 사용자 비밀번호 정책 설정</h3>
          <p className="text-sm text-muted-foreground">
            협력업체 사용자들을 위한 비밀번호 정책과 보안 설정을 관리할 수 있습니다.
          </p>
        </div>
        <Separator />
        <Alert variant="destructive">
          <AlertTriangle className="h-4 w-4" />
          <AlertDescription>
            보안 설정을 불러오는 중 오류가 발생했습니다. 페이지를 새로고침하거나 관리자에게 문의하세요.
          </AlertDescription>
        </Alert>
      </div>
    )
  }
}